package com.sky.mapper;

import com.sky.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * PROJECT_NAME: sky-take-out
 * NAME: UserMapper
 * USER: zhang
 * DATE: 2023/5/21
 * DESCRIPTION :C端-用户信息持久层
 */
@Mapper
public interface UserMapper {

    /**
     * 查询当前用户中是否存在该openid对应的用户信息
     *
     * @param openid openid
     * @return {@link User}
     */
    User selectUserByOpenid(@Param("openid") String openid);

    /**
     * 添加员工到user表中
     * @param user
     */
    void insert(@Param("user") User user);

    /**
     * 基于Id查询用户信息
     *
     * @param userId 用户Id
     * @return 用户信息
     */
    User selectUserById(@Param("userId") Long userId);

    /**
     * 查询所有用户信息信息
     * @return 用户信息集合
     */
    List<User> selectAllUserList();

    /**
     * 基于用户持久层查询当天新增用户/用户总量
     * @param startTime 当天开始时间
     * @param endTime 当天结束时间
     * @return 新增用户数量/总数量
     */
    Integer selectUserCountByTime(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}
